3.1. Template 특수화

컴파일시 코드가 템플릿을 생성하지 않고, 특정 타입의 템플릿에 대해서 커스텀으로 만들어 내는 기능

template<typename T>
struct PropertyTraits 
{
    // 기본적으로는 아무 내용도 없음 (실수로 정의 안 된 타입 쓰면 에러 나게 유도)
};

template<> // "이건 특수화된 버전이야"라고 컴파일러에게 알림
struct PropertyTraits<float> // "그중에서도 float 전용이지"
{
    static constexpr const char* Tag = "float";
    static constexpr EPropertyType Type = EPropertyType::EPT_Float;
};